package com.mi.soul.whale.module.system.service;


import com.mi.rule.util.project.SRS;
import com.mi.soul.whale.mybatis.entity.*;

import java.util.List;

/**
 * <p>
 * 资源表 服务类
 * </p>
 *
 * @author 王永吉
 * @date 2019-08-24
 */
public interface SystemService {


    /**
     * 更新已存在资源的功能和名称
     */
    SRS resourceRefreshAll(SRS param);

    /**
     * 修改角色资源
     */
    SRS updateRoleResource(SRS param);

    /**
     * 修改角色菜单
     */
    SRS updateRoleMenu(SRS param);

    /**
     * 刷新某个用户的角色
     */
    SRS refreshUserRole(String userId);

    /**
     * 获取角色资源
     */
    List<SysLinkRoleResource> getRoleResource(String roleId);

    /**
     * 获取角色菜单
     */
    List<SysLinkRoleMenu> getRoleMenu(String roleId);

    /**
     * 获取用户角色
     */
    List<SysLinkRoleUser> getUserRole(String userId);

    /**
     * 项目启动时调用一次
     * <p>
     * 1.清除已失效资源
     * 2.更新已存在的资源
     * 3.添加新资源
     * 4.插入到缓存中
     */
    SRS systemResourceCleanAdd(SRS param);

    /**
     * 项目启动时调用一次
     * 刷新角色菜单和角色资源
     */
    SRS refreshRoleMenuAndResource(SRS param);

    //资源列表
    List<SysResource> resources();

    //角色列表
    List<SysRole> roles();

    //菜单列表
    List<SysMenu> menus();

    //角色菜单Urls
    List<String> roleMenuUrls(Object roleId);

    //角色菜单List
    List<SysMenu> roleMenuList(Object roleId);

    //角色资源Urls
    List<String> roleResourceUrls(Object roleId);

    //角色资源List
    List<SysResource> roleResourceList(Object roleId);


    SRS insertDict(SysDict dict);

    SRS deleteDict(Object[] ids);

    SRS updateDict(SysDict dict);

    SRS pageDict(SRS param);

    SRS listDict(SRS dict);

    SRS infoDict(SRS param);
}
